CLCTN · TYPE MANIFEST · WINE · SEPTEMBER 2026
75cl · MY CELLAR
The first type that disappears when you enjoy it.
Wine passes the test for a new type easily — it is collected, catalogued, graded, insured and traded by people who already keep spreadsheets. But it is not another vinyl. It is the first type in the app whose objects are consumed, and the first whose value moves because time passed rather than because the market did. Both of those want something the engine does not have yet.
Written against vinyl.yml as the reference manifest. Where wine simply mirrors vinyl, it is not discussed — section 04 lists only the rows that differ and why.
01 · FOUR THINGS WINE BREAKS
Each of these is a genuine gap in the manifest schema, not a field that was overlooked. The good news is that all four are small, and three of them pay off in other types later.
{{ b.b }}
WHAT IT NEEDS
{{ b.needs }}
02 · THE DRINKING WINDOW — THE REASON TO BUILD THIS TYPE
Every other type answers what do I own and what is it worth. Wine adds a third question nobody else answers well: what should I open tonight, and what have I left too long? A cellar is the only collection with a deadline, and missing it is the thing collectors genuinely fear.
A new field type — yearRange with an inner peak — and one derived state per bottle. Slide the vintage and bottle size in Tweaks; large formats mature slower, which is real and which the curve should respect.
Château Léoville-Barton
Saint-Julien · {{ formatLabel }}
{{ vintageLabel }}
NOW · 2026
{{ s.years }}
{{ s.name }}
STATE RIGHT NOW
{{ statusName }}
{{ statusNote }}
THE DERIVED FIELD
{{ derivedCode }}
03 · WINE.YML
The whole type, in the shape vinyl already uses. Three keys are new to the schema and are marked in section 06; everything else is an existing primitive doing an ordinary job.
RESOURCES/TYPES/WINE.YML
TYPE 15
{{ manifestYaml }}
04 · VINYL → WINE, WHERE THEY DIVERGE
Only the rows that differ. The parallels are worth noticing too: both types grade two things rather than one — vinyl grades media and sleeve, wine grades fill level and label — and in both cases collectors quote both numbers in the same breath.
{{ d.key }}
{{ d.vinyl }}
{{ d.wine }}
{{ d.why }}
05 · OPENING A BOTTLE
The action no other type has. Rule 09 says a quantity type is not individually tradable — you cannot lend one of four identical cards. That stays true for wine. But a quantity type can still be consumed individually, and consumption is not deletion. The bottle leaves the cellar and joins the history; the wine itself stays in the collection at count zero, because what you drank is the most interesting thing you can know about a cellar.
THE CONSEQUENCE WORTH ARGUING ABOUT
A cellar's headline number stops being what it is worth and becomes what is left. Both matter, but a collector who has drunk half their cellar has not lost half their collection — they have used it correctly. The collection screen for wine should lead with bottles remaining and bottles drunk, and put value second. No other type in the app would want that, which is a good sign the type system is earning its keep.
06 · IDENTIFICATION — AND WHAT THE ENGINE HAS TO GROW
CAPTURE STRATEGY
Transcription, not matching.
Empty symbologies, empty providers — wine barcodes are assigned per importer and never carry the vintage, and no open label corpus exists. So wine does not attempt a catalogue lookup at all. The camera reads the label and fills four fields, and that is the whole feature.
This is a good outcome rather than a compromise. A wine label is a large, flat, high-contrast, text-dominated surface photographed at arm's length — close to the best case OCR ever gets, and far easier than a record spine. The vintage is usually the only number on the label, which makes it trivially extractable.
Confidence never reaches the auto-commit band, because there is nothing to be confident against. Every wine lands in the flag-for-a-glance band with its fields pre-filled — which is still four fewer keyboard taps per bottle than any cellar app on the market.
07 · STILL OPEN